#ifndef TSCREEN_H
#define TSCREEN_H

#include <QWidget>
#include <QImageReader> // 图片读取
#include <QDebug>
#include <QPixmap> // 像素图
#include <QScreen> // 截取屏幕
#include <QMouseEvent> // 鼠标
#include <QPoint> // 点位置
#include <QPainter>  // 画板
#include <QRect> // 矩形
#include <QTimer>
#include "capScreen.h"

QT_BEGIN_NAMESPACE
namespace Ui { class TScreen; }
QT_END_NAMESPACE





class TScreen : public QWidget
{
    Q_OBJECT

public:
    TScreen(QWidget *parent = nullptr);
    ~TScreen();

private:
    // 删除指针等new创建对象函数
    void claer();  // 通常QT的控件对象都不需要自己清理，因为它们有父对象，父对象销毁时子对象自动销毁。但是这里会使用到自动new的图片对象，所以需要手动销毁
    QRect getRect(QPoint start,QPoint end);



public slots:
        //针对动态图  暂时未实现
        void RecvPlayError(QImageReader::ImageReaderError  error); // 接收出错的信号
        void RecvFrameNumber(int freameNumber);  // 接收播放时帧号的变化
        void updateRealTime(); // 实时时间

private slots:
    void on_pushButtonCap_clicked();

    void on_pushButtonSave_clicked();

    void on_pushButtonCancel_clicked();

    void on_pushButtonCapRange_clicked();

    void slotShotPixmap(QPixmap qp);


private:
    Ui::TScreen *ui;
    QPixmap  *picOrg;  // 用于保存原始图
    QPixmap  *picChg;  // 用于保存修改图-- 有时需要在有限的截图框内显示很大的图会导致显示有问题，需要等比例缩放后进行显示
    QScreen  *mScreen; // 用于截取图
    QTimer   *mTimer;  // 用于时间获取
    bool  isOperation; // 是否正在进行操作

    CapScreen *capScreen; // 截取屏幕类

};
#endif // TSCREEN_H
